import { Callout } from "nextra-theme-docs";

# 部署

<Callout type="info">

部署篇章将会省略平台的配置内容，如有需要请参考 [快速上手](/zh/quick-start) 章节及 [`appsettings.json` 配置](/zh/config/appsettings) 章节。

</Callout>

GZCTF 提供多种可行的部署方式，按照推荐度排序如下所示：

## K8s 集群部署（可持续部署 👍）

GZCTF、数据库、题目容器均在同一 k8s 集群中，使用命名空间进行隔离。可以最大程度地利用 k8s 的优势，同时可以利用 grafana、prometheus 等监控工具进行监控，也有更完善的统计数据可以收集，但是部署过程较为复杂，学习成本较高。**不过是持续化部署的首选**。[查看细节](/zh/deployment/k8s-only)

## Docker + K8s 分离部署（小型比赛推荐 👍）

GZCTF、数据库在一个 Docker 实例中，并使用远程 k8s 作为题目容器平台。这样的部署方式可以在可接受的成本下最大化地利用 k8s 的安全性和部署优势，部署过程更加亲民。**采用 k3s 作为 k8s 发行版，可以实现低难度部署，对于一般 CTF 比赛和校赛来说是一个不错的选择**。[查看细节](/zh/deployment/docker-k8s)

<Callout type="warning">

在使用 Docker + K8s 分离部署时，**无法使用平台流量代理及流量捕获功能**。

如果您只有一台机器，强烈不建议在一台机器上同时运行 k3s 和 Docker，并使用 Docker 运行 GZCTF。

</Callout>

## Docker 单机部署（仅供测试 ⚠️）

GZCTF、数据库、题目容器均在同一 Docker 实例中，这样的部署方式可以在单机小资源的情况下进行部署，**但是安全性较低，资源限制相关功能不够完善，仅推荐在单机测试、最小化部署的情况下使用**。[仍在施工，参考快速开始](/zh/quick-start)

## Docker Swarm 集群部署（不推荐 🚫）

GZCTF、数据库、题目容器均在 Docker Swarm 集群中，目前 Docker Swarm 集群部署的功能虽然可用，但由于缺少部署经验，且相对于上述部署方式可能存在一些安全性问题，**不推荐使用**。
